home *** CD-ROM | disk | FTP | other *** search
-
- GEMAR-XFS-Treiber - Restore per Desktop (c) Steffen Engel '93
-
- Version 1.20 vom 05.03.94
-
-
- MiNT kann aufgrund von MultiTOS bald als System für jedermann angesehen
- werden. Daher ist es sehr interessant, einen Treiber einzubinden, der
- Streamer-Bänder als logisches Laufwerk anmeldet.
-
- Diesem Zweck dient GEMAR.XFS
-
- Einerseits können Bänder von GEMAR als Laufwerk eingeblendet werden, so daß
- Dateien direkt über das Desktop kopiert werden können, andererseits wird ein
- Device-Treiber installiert, mit dem Sie direkt auf den Streamer zugreifen
- können (u:\dev\mt).
- Der Device-Driver dient dazu, daß ALLE Programme auf den Streamer zugreifen
- können, denn dieses Device entspricht im Zugriff einer Datei.
-
-
- LIEFERUMFANG:
-
- Der Treiber ist nur für registrierte GEMAR-Benutzer erhältlich und kostet
- DM 30,-
-
- Die Registrierung erfolgt über das Programm REG_XFS.PRG
-
- VORAUSSETZUNGEN
-
- Sie benötigen selbstverständlich einen Streamer, sowie MiNT oder MultiTOS.
- Für die Verwendung des XFS MUSS der Streamer Rückwärts-Spacing beherrschen.
- Im Allgemeinen können das heutzutage alle Streamer, aber ältere Geräte
- unterstützen dies nicht immer (zB Tandberg TDC 3620 mit Firmware 3.0)
-
-
- INSTALLATION
-
- Kopieren Sie GEMAR.XFS in Ihr MiNT/MultiTOS-Verzeichnis (C:\MINT\ oder
- C:\MULTITOS\
-
- Kopieren Sie die Datei GEMARXFS.PAR in eines der Verzeichnisse C:\MINT\,
- C:\MULTITOS\, C:\SYS\ oder C:\
-
- Passen Sie die Datei GEMARXFS.PAR an Ihre Bedürfnisse an (siehe unter
- 'PARAMETER')
-
- Kopieren Sie TAPE.TTP in ein Verzeichnis, in dem es von Ihrer Shell
- gefunden wird.
-
- Kopieren Sie GEMARCNF.CPX in Ihr CPX-Verzeichnis.
-
- Bei dem nächsten Booten mit MiNT/MultiTOS ist der Treiber installiert.
-
-
- VERWENDUNG DES XFS
-
- Das Einbinden eines GEMAR-Backups als logisches Laufwerk können Sie
- entweder über das CPX oder über TAPE.TTP steuern.
- Zur Verwendung von TAPE.TTP sollten Sie die beiliegende Manual-Page lesen.
-
- Ein GEMAR-Backup wird als Laufwerk eingeblendet, indem im CPX-Modul der
- Button 'XFS laden' angewählt wird. Nach dem Einlesen des Index vom Band
- steht der Inhalt des Bandes in dem in der Parameterdatei angegebenen
- Laufwerk zur Verfügung.
-
- Von diesem Laufwerk aus können Sie Dateien kopieren, Programme starten und
- alles andere, was mit einer Festplattenpartition auch geht.
-
- Was jedoch nicht funktioniert, ist Dateien auf das Laufwerk zu kopieren.
-
- ***************************** ACHTUNG!! **********************************
-
- Entnehmen Sie auf keine Fall das Band, ohne es vorher über das CPX
- oder TAPE.TTP entladen zu haben!
-
-
- VERWENDUNG DES DEVICE
-
- Laden Sie das Band über TAPE.TTP, oder über das CPX-Modul mit 'DEV laden'.
- Danach können Sie mit ALLEN Programmen auf das Band zugreifen.
-
- Beachten Sie, daß es nicht möglich abwechselnd Daten zu lesen und zu
- schreiben. Dies ist mit SCSI-Streamern nicht möglich und liegt in der
- Natur eines Streamers.
- Entweder man schreibt vom Anfang des Bandes aus (dabei wird das Band
- gelöscht!!), oder sie spulen das Band an das Ende, bevor Sie auf das Band
- schreiben.
-
- Somit können Sie zum Beispiel zum Austausch von Daten mit anderen Systemen
- (OS9, Unix, Minx, Linux...) Bänder mit einem TAR schreiben/lesen.
- Dazu geben Sie als Archiv einfach u:\dev\mt an.
-
- Beispiele
-
- tar -c u:\dev\mt c:\
- Sichern aller Dateien von Laufwerk C: auf das Band
-
- tar -t u:\dev\mt
- Inhaltsverzeichnis des TAR-Archives auf dem Band anzeigen.
-
- Genauso kann natürlich cpio verwendet werden, oder man sichert einfach aus
- einem Editor heraus eine Datei als U:\dev\mt.
-
- ***************************** ACHTUNG!! **********************************
- Entnehmen Sie auf keine Fall das Band, ohne es vorher über das CPX
- oder TAPE.TTP entladen zu haben!
-
-
- PARAMETER
-
- Die Parameterdatei enthält alle nötigen Informationen für die Ansprache des
- Streamers und die Einbindung des Treibers.
-
- -DEVICE = drv
- Der Laufwerksbuchstabe, unter dem das XFS installiert wird.
-
- -XFSNAME = name
- Mit neueren Versionen von MiNT (>= 1.08) kann das Gerät unter einem
- Namen in U:\ angelegt werden. Wenn ein MiNT >= 1.08 aktiv und XFSNAME
- angegeben sind, wird das Gerät auf diese Weise angemeldet, ansonsten
- als das in DEVICE angegebene Laufwerk.
- Der Ordner erscheint nur dann in Laufwerk U:, wenn ein Band als XFS
- geladen ist.
- ACHTUNG: Bitte beachten Sie die Informationen zu EINSCHRÄNKUNGEN
-
- -BUFFER = num
- Größe des Puffers in kByte, der zur Pufferung von Lesezugriffen auf
- u:\dev\mt verwendet wird, wenn die Pufferung eingeschaltet ist.
- Außerdem die Puffergröße für Schreibzugriffe auf u:\dev\mt (kann nicht
- abgeschaltet werden)
-
- -BUFFERED = ON
- Die Pufferung von u:\dev\mt beim Lesen. Als Default ist die Pufferung
- abgeschaltet, kann aber mittels TAPE.TTP jederzeit eingeschaltet
- werden.
-
- -PREMSGTIME = num
- -POSTMSGTIME = num
- Die von GEMAR als 'Wait vor SCSI' und 'Wait nach SCSI' bekannten Werte
- (in ticks)
-
- -DATATIMEOUT = num
- -LOADTIME = num
- -REWINDTIME = num
- -SPACETIME = num
- Die von GEMAR als 'Data-Timeout', 'Load-Timeout', 'Rewind-Timeout' und
- 'Space-Timeout' bekannten Werte (in Sekunden)
-
- -BLOCKSIZE = num
- Die Blockgröße des Streamers
-
- -UNIT = DMA|ALIA|TT|FALCON
- Der Port, an dem der Streamer angeschlossen ist
-
- -TARGET = num
- Die Target-Nummer des Streamers. Wird bei TT|FALCON ignoriert
-
- -SCSIID = num
- Die SCSI-Id des Streamers. Wird bei DMA ignoriert
-
- -QFA = NONE|SEEK|LOCATE
- Fähigkeiten des Streamer zu Quick-File-Access.
-
- -CMD = LOAD|UNIT_READY|MODE_SELECT|PREVENT_REMOVAL
- Zu verwendende Kommandos des Streamers.
- Geben Sie einfach die Parameter an, die Sie auch in GEMAR verwenden.
- Sollen mehrere Kommandos gesetzt werden, so können Sie die Zeile
- mehrfach schreiben, z.B.
-
- CMD = LOAD
- CMD = MODE_SELECT
- CMD = PREVENT_REMOVAL
-
- -KEYFILE = path\name
- Die Lage des Keyfiles von GEMAR auf Ihrer Festplatte. Diese Datei wird
- beim Laden eines XFS benötigt, um zu erkennen, ob der vordere Index
- gültig ist.
-
- INTERNA
-
- Falls virtuelles oder alternatives (FAST) RAM vorhanden ist, installiert
- GEMAR.XFS eine XFRB-Struktur:
-
- struct {
- int version; /* Version des XFRB-cookies, $0100 = 1.00 */
- char *xflock; /* extended flock, Semaphore */
- char *buffer; /* Adresse eines Puffers im ST-RAM, mindestens 64K */
- long size; /* Puffergröße */
- } XFRB;
-
- Der XFRB stellt Gerätetreibern (z.B. für Streamer), insbesondere für die
- ACSI-Schnittstelle, eine Alternative zum _FRB des BIOS zur Verfügung und
- verhindert, daß es zu Kollisionen kommt, falls ein Festplattentreiber (z.B.
- bei Systemen mit virtuellem Speicher) zur gleichen Zeit den _FRB ansprechen
- will, wie der Gerätetreiber. Synchronisiert werden die Zugriffe über xflock.
- Ist die Semaphore gesetzt, darf also nur das Programm den XFRB benutzen, das
- die Semaphore gesetzt hat.
-
-
- Fals die Struktur bereits von einem anderen Programm angelegt ist, wird sie
- vom Treiber benutzt. GEMAR benutzt ebenfalls diesen Puffer, wenn er vorhanden
- ist.
-
-
-
- EINSCHRÄNKUNGEN
-
- Die unregistrierte Version kann im XFS-Betrieb nur 15 Dateien bearbeiten
- (15 mal Fopen).
- Danach wird ein Zugriff mit EACCDN abgebrochen.
-
- Es ist nicht möglich auf dem Band Daten zu verändern, oder Daten auf das
- Band zu kopieren. Dies liegt an der Technik von Streamern.
-
- Bei Streamern, die am Bandende auf Request Sense nicht BLANK CHECK, VADD
- und fehlende Blöcke in den Infobytes melden, kann der Treiber bei Reads
- von u:\dev\mt evtl. das Bandende nicht sauber erkennen.
- Dies kann unter Umständen zu ewigem Lesen verdonnern (zB TAR auf einem
- Band ohne Abschluß-Header)
-
- Zur Zeit kann nur das erste Backup auf dem Band bearbeitet werden.
-
- Verschlüsselte Backups (Password) können nicht benutzt werden.
-
- Bänder, die mit GEMAR < 2.0 geschrieben wurden, können nicht gelesen
- werden.
-
- In MiNT 1.08 und 1.09 sind zwei Fehler, die leider große Schwierigkeiten mit
- XFS-Treibern machen, die nicht auf der Festplatte liegen.
- Daher muß man entweder MiNT 1.04 verwenden, oder die folgenden Patches in
- MiNT machen:
-
- ****************************************************************************
-
- MiNT 1.08:
- Korrektur von FILESYS.C durchführen:
- In Prozedur disk_changed:
-
- *************************** FILESYS.C *******************************
- TRACE(("calling mediach(%d)",d));
- r = (int)mediach(d);
- TRACE(("mediach(%d) == %d", d, r));
-
- if (r < 0) return r;
-
- if (r == 1) { /* drive _may_ have changed */
- r = rwabs(0, tmpbuf, 1, 0, d, 0L); /* check the BIOS */
- if (r != E_CHNG) { /* nope, no change */
- TRACE(("rwabs returned %d", r));
- return (r < 0) ? r : 0;
- }
- r = 2; /* drive was definitely changed */
- }
- *********************************************************************
-
- Dabei hat Eric leider eins nicht bedacht:
-
- -mediach ruft den Festplattentreiber auf (callext1 auf hdv_mediach)
- Dieser kennt natürlich nur Festplattenlaufwerke und keine XFS-Treiber
- die nicht auf der Platte aufsetzen (CD-ROM, RAMFS, Streamer).
- Daher antwortet der Treiber mit EUNDEV und MiNT meldet das Laufwerk als
- fehlerhaft.
-
- Daher folgende Änderung:
-
- ************************* FILESYS.C *********************************
- TRACE(("calling mediach(%d)",d));
- r = (int)mediach(d);
- TRACE(("mediach(%d) == %d", d, r));
-
- /* r = EUNDEV:
- * maybe the drive is not based on Harddisk, so the HDdriver says
- * EUNDEV.
- * Ask the Filesystem for Mediachange.
- * SE 16.08.93
- */
- if (r == EUNDEV)
- {
- TRACE(("request XFS for media change"));
- fs = drives[d]; /* get filesystem associated with drive */
- if (fs)
- if ((*fs->dskchng)(d)) { /* does the fs agree that it changed? */
- drives[d] = 0;
- changedrv(d); /* yes -- do the change */
- return 1;
- }
- else return 0;
- }
- if (r < 0) return r;
- *********************************************************************
-
-
- ***************************************************************************
- FS_UNMOUNT kann nicht funktionieren, da in UNIFS.C in uni_fscntl der
- Filecookie nicht auf eine UNIFILE-Struktur zeigt, sondern auf eine
- Struktur des XFS.
- Daher folgende Änderung, bis Eric sich dazu äußert:
-
- UNIFS.C in uni_fscntl:
- ********************************************************************
- } else if (cmd == FS_UNMOUNT) { /* remove a file system's directory */
- struct fs_descr *d = (struct fs_descr*)arg;
- FILESYS *fs;
- UNIFILE *u;
-
- /* first check that directory exists */
- r = uni_lookup(dir, name, &fc);
- if (r != 0) return EFILNF; /* name does not exist */
- if (!d) return EFILNF;
- if (!d->file_system) return EFILNF;
- if (d->file_system != fc.fs)
- return EFILNF; /* not the right name! */
-
- /* fc->index does not point to a UNIFILE struct, as i can see
- * in uni_lookup.
- * So I'll get u via search of u_root.
- * With this modification FS_UNMOUNT works fine with my XFS.
- * SE 30.08.93
- */
- for (u = u_root; u && u->fs != d->file_system; u = u->next)
- {
- }
-
- /* u = (UNIFILE*)fc.index; Korrigiert: SE 30.08.93 */
- #endif
- ***************************************************************************
-
-
- HISTORY
- -1.0 vom 15.10.93:
- erstes öffentliches Release
-
- -1.01 vom 27.10.93
- -Wie es kommen mußte: ein kleiner Bug führte dazu, daß der SCSI-Port des
- Falcon nicht angesprochen werden konnte.
-
- -1.10 vom 05.03.94
- -Installation von XFRB 1.01
- -Interne Änderungen an den SCSI-Libs.
- -Wie auch in GEMAR keine Unterscheidung mehr zwischen Falcon und
- TT-SCSI. Im Parameterfile kann jetzt einfach 'SCSI' verwendet
- werden.
-
-
-
- Steffen Engel, 05.03.93
-